package com.wing.product.model.response;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableName;
import com.wing.mybatis.common.BaseEntity;
import com.wing.product.model.entity.WarehouseProductInventory;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import lombok.experimental.Accessors;

import java.math.BigDecimal;
import java.time.LocalDateTime;

/**
 * 产品入库表
 */
@Schema(description="产品入库表")
@Data
@NoArgsConstructor
@Accessors(chain = true)
//@TableName(value = "warehouse_product_inventory")
public class WarehouseProductInventoryVO {

    private  Long id;

    @TableField(value = "warehouse_product_id")
    @Schema(description="产品id 取 warehouse_product表")
    private Long warehouseProductId;

    @TableField(value = "warehouse_type_id")
    @Schema(description="仓库类型ID")
    private Long warehouseTypeId;//

    @TableField(value = "warehouse_id")
    @Schema(description="仓库ID")
    private Long warehouseId;//

    @Schema(description="仓库")
    private String warehouseName;

    @TableField(value = "warehouse_area_id")
    @Schema(description="仓库库区ID")
    private Long warehouseAreaId;//

    @Schema(description="仓库库区")
    private String warehouseAreaName;

    @TableField(value = "warehouse_shelf_id")
    @Schema(description="库区货架ID")
    private Long warehouseShelfId;

    @TableField(value = "warehouse_shelf_space_id")
    @Schema(description="库位ID")
    private Long warehouseShelfSpaceId;

    @Schema(description="库位")
    private String warehouseShelfSpaceCode;

    @TableField(value = "pallet_box_id")
    @Schema(description="料箱ID")
    private Long palletBoxId;

    @TableField(value = "product_status")
    @Schema(description="商品状态 1、发货 2、签收 3、入库 4、出库")
    private Integer productStatus;

    @TableField(value = "customer_id")
    @Schema(description="客户编号（货物归属者）先用warehouse_customer，后用sel_customers_info表")
    private Long customerId;
    private String customerName;
    private String customerCode;

    @TableField(value = "price")
    @Schema(description="价格  每天多少钱，取当时的托管价格")
    private Double price;

    @TableField(value = "gross_weight")
    @Schema(description="毛重")
    private Double grossWeight;

    @TableField(value = "net_weight")
    @Schema(description="净重")
    private Double netWeight;

    @TableField(value = "warehouse_shipment_order_id")
    @Schema(description="发货单号")
    private Long warehouseShipmentOrderId;

    @TableField(value = "user_bundle_code")
    @Schema(description="用户捆包号")
    private String userBundleCode;

    @TableField(value = "sys_bundle_code")
    @Schema(description="系统捆包号 实际就是code 需要唯一")
    private String sysBundleCode;

    @TableField(value = "first_entry_date")
    @Schema(description = "首入库日期")
    private LocalDateTime firstEntryDate;

    private Long warehouseSignOrderId;
    private Long warehouseStorageOrderId;

    private Long warehouseShipmentOrderDetailId;
    private Long warehouseSignOrderDetailId;
    private Long warehouseStorageOrderDetailId;
    private Integer inventorySum;

    @Schema(description="单位")
    private String unit;

    @Schema(description="单位id")
    private Long unitId;

    private String productName;



    @TableField(value = "product_id")
    @Schema(description="原产品id 取pro_product 表")
    private Long productId;

    @TableField(value = "product_type_id")
    @Schema(description="产品类型 取 pro_product_type表")
    private Long productTypeId;

    private String productType;

    @TableField(value = "product_category_id")
    @Schema(description="所属分类 取 pro_product_category表")
    private Long productCategoryId;
    private String productCategory;

    @TableField(value = "product_variety_id")
    @Schema(description="品种")
    private Long productVarietyId;
    private String productVariety;

    @TableField(value = "product_material_id")
    @Schema(description="材质")
    private Long productMaterialId;
    private String productMaterial;

    @TableField(value = "product_brand_id")
    @Schema(description="产品品牌 取 pro_product_brand表")
    private Long productBrandId;
    private String productBrand;

    @TableField(value = "product_code")
    @Schema(description="产品编码（sku）")
    private String productCode;

    @TableField(value = "product_main_unit_id")
    @Schema(description="主单位")
    private Long productMainUnitId;
    private String productMainUnit;

    @TableField(value = "product_sub_unit_id")
    @Schema(description="辅单位")
    private Long productSubUnitId;
    private String productSubUnit;

    @TableField(value = "product_image_url")
    @Schema(description="产品图片地址")
    private String productImageUrl;

    @TableField(value = "product_spec_code")
    @Schema(description="规格码")
    private String productSpecCode;

    @TableField(value = "thing_code_status")
    @Schema(description="是否一物一码")
    private String thingCodeStatus;
    private String customer;

    @TableField(value = "width")
    private Double width;

    @TableField(value = "length")
//    private Double productLength;
    private String productLength;

    @TableField(value = "diameter")
    private Double diameter;

    @Schema(description = "牌号")
    @TableField(value = "product_mark_id")
    private Long productMarkId;
    private String productMark;

    @Schema(description = "生产商")
    @TableField(value = "product_producer_id")
    private String productProducerId;
    private String productProducer;

    @Schema(description="货权入库日期")
    private LocalDateTime indate;

    @Schema(description="入库日期")
    private LocalDateTime firstDate;



    @TableField(value = "quantity")
    @Schema(description="数量")
    private Integer quantity;

    @TableField(value = "product_type")
    @Schema(description="类型1.成品，2.余料，3.废料")
    private Integer product_type;

    @TableField(value = "original_customer_id")
    @Schema(description="原始客户id")
    private Long originalCustomerId;

    @Schema(description="货权客户id")
    private Long buyerCustomerId;

    @Schema(description="货权变更时间")
    private LocalDateTime originalTransferOrderTime;

    @Schema(description="货权记录编号")
    private String transferCode;

    @Schema(description="计价费用")
    private BigDecimal pricingFee;

    @Schema(description="已出账")
    private BigDecimal alreadyBilled;

    private Long productInventoryId;

    @Schema(description="托管订单编号")
    private String orderCode;

    @Schema(description = "规格")
    @TableField("specifications")
    private String specifications;

    @Schema(description = "开始时间")
    @TableField("start_time")
    private LocalDateTime startTime;

    @Schema(description = "钢种")
    @TableField("warehouse_product_mark")
    private String warehouseProductMark;

    @Schema(description = "备注")
    @TableField("remarks")
    private String remarks;

    @Schema(description = "产地")
    @TableField("warehouse_product_producer")
    private String warehouseProductProducer;

    @Schema(description = "所在库位")
    @TableField("storage_location")
    private String storageLocation;

    @Schema(description = "第三方库位")
    @TableField("third_party_location")
    private String thirdPartyLocation;

    @Schema(description = "品种")
    @TableField("warehouse_product_variety")
    private String warehouseProductVariety;

    @Schema(description = "入库单号(第三方入库单号)")
    @TableField("inbound_order_number")
    private String inboundOrderNumber;

    @Schema(description = "货物类型")
    @TableField("goods_type")
    private String goodsType;

    @Schema(description = "规格厚度")
    @TableField("spec_thickness")
    private BigDecimal specThickness;

    @Schema(description = "规格宽度")
    @TableField("spec_width")
    private String specWidth;

    @Schema(description = "规格长度")
    @TableField("spec_length")
    private String specLength;

    @Schema(description = "磅重")
    @TableField("pound_weight")
    private String poundWeight;

    @Schema(description = "包装方式")
    @TableField("packaging_method")
    private String packagingMethod;

    @Schema(description = "首次入库时间")
    @TableField("first_inbound_time")
    private LocalDateTime firstInboundTime;

    @Schema(description = "原料管理号")
    @TableField("material_management_number")
    private String materialManagementNumber;

    @Schema(description = "入库方式")
    @TableField("inbound_method")
    private String inboundMethod;

    @Schema(description = "材质")
    @TableField("product_material_category")
    private String productMaterialCategory;

    @Schema(description = "客户入库日期")
    @TableField("customer_inbound_date")
    private LocalDateTime customerInboundDate;

    @Schema(description = "可供重量")
    @TableField("available_weight")
    private BigDecimal availableWeight;

    @Schema(description = "可供件数")
    @TableField("available_quantity")
    private Integer availableQuantity;

    @Schema(description = "标签打印")
    @TableField("label_printed")
    private Boolean labelPrinted;

    @Schema(description = "密度")
    @TableField("density")
    private BigDecimal density;

    @Schema(description = "开始计费时间")
    @TableField("billing_start_time")
    private LocalDateTime billingStartTime;

    private LocalDateTime reviewTime;

    private Long warehouseFactoryAdministrationId;

    private Long inventoryTypeId;

    private  String inventoryId;

    private Long isReview;

    private Long markId;


}